home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / programs / mbbs12d.zip / MACROBBS.MAC < prev    next >
Text File  |  1992-06-23  |  49KB  |  1,656 lines

  1.  
  2.                               MacroBBS v1.2d
  3.                     by Jeff Oberlee   (C)opyright 1992
  4.  
  5. {:ALR} {GOTO WF3}   {:ALU} {GOTO BBS}
  6.  
  7. {:setup}
  8.   {CLEA}
  9.   {STAT n}  {LIGH y}  {LOCA n}  {SPOC y}  {HFLO n}  {CURS n}
  10.   {SETE time_out}
  11.   {DISP 1,1,0F,Setup}
  12.   {SETV s}
  13.  
  14.     * CONFIGURATION *
  15.  
  16.   {IFEX %_hom%MACROBBS.CFG,,err1}
  17.   {DISP 2,1,0E,Reading MacroBBS configuration...}
  18.   {ROPE %_hom%MACROBBS.CFG,err1}  {READ bbs}  {RCLO}
  19.   {COMP bbs,BBS's name here}  {IFCO err1}
  20.   {ROPE %_hom%MACROBBS.CFG,err1}
  21.   {READ bbs}
  22.   {READ sysop}
  23.   {READ syspass}
  24.   {READ datadir}
  25.   {IFEX %datadir%*.*,,err}
  26.   {READ msgsdir}
  27.   {IFEX %msgsdir%*.*,,err}
  28.   {READ max}
  29.   {READ userdir}
  30.   {IFEX %userdir%*.*,,err}
  31.   {READ filedir}
  32.   {IFEX %filedir%*.*,,err}
  33.   {READ dszdir}
  34.   {READ mspeed}
  35.   {READ initstr}
  36.   {READ bw}
  37.   {READ asan}
  38.   {READ cb}
  39.   {READ dal}
  40.   {READ sal}
  41.   {READ ring}
  42.   {READ connect}
  43.   {READ tlc}
  44.   {READ lock}
  45.   {RCLO}
  46.   {PARM %mspeed}
  47.  
  48.  
  49.   {DISP 3,1,0E,Initializing modem...}  {DISP 4,1,,}
  50.   {SEND %initstr^J^M}
  51.   {RETURN}
  52.  
  53. {:cd}
  54.   {IFCA cd1}
  55.   {COMP on,1}  {IFCO time_out}
  56. {:cd1}  {COMP on,1}  {IFCO ,cd2}
  57.   {COMP _ela,%tlc}  {IFCO-GE gby2}
  58. {:cd2}  {RETURN}
  59.  
  60. {:cls}
  61.   {CLEA}
  62.   {COMP on,}  {IFCO CLS3}
  63.   {COMP mnu,A}  {IFCO CLS1}
  64.   {SEND ^[[2J}
  65.   {GOTO CLS2}
  66. {:CLS1} {SEND ^L}
  67. {:CLS2} {DISP 1,1,4F,│                                                                              }
  68.   {DISP 1,3,4E,%login_name #%userno}
  69.   {DISP 1,38,47,AL=%al}
  70.   {DISP 1,48,47,%mspeed}
  71.   {DISP 1,57,47,%_ela mins}
  72.   {DISP 1,70,4F,%an9%%chat}
  73.   {DISP 2,1,4F,└──────────────────────────────────────────────────────────────────────────────}
  74.   {DISP 3,1,07,}
  75. {:CLS3}  {RETURN}
  76.  
  77. {:press_any_key}
  78.   {COMP mnu,a}  {IFCO PAK1}
  79.   {SEND %an3%%an9^[[24;1h^[[24;1f[Press Any Key]%an0}
  80.   {GOTO PAK2}
  81. {:PAK1} {SEND ^J^M^J[Press Any Key]}
  82. {:PAK2} {SETG 240,time_out}
  83.   {GETS-H temp,1,PAK}
  84. {:PAK}  {SEND ^M               ^M}
  85.   {SETV temp}
  86.   {RETURN}
  87.  
  88. {:ascii_ul}
  89.   {PARM ,,,,1}
  90.   {ASCI-S0 %dump_file,}
  91.   {PARM ,,,,0}
  92.   {RETURN}
  93.  
  94. {:dsp_file}
  95.   {IFEX %dump_file,,DF5}
  96.   {SETV count,0}  {SETV open,y}
  97.   {SETE time_out}
  98.   {ROPE %dump_file,DF3}
  99.   {COMP e,1}  {IFCO ,DF}
  100.   {INCR count,2}
  101.   {READ dline}
  102.   {READ dline}  {SEND %an7%To:    %an3%%dline^J^M}  {INCR count}
  103.   {READ dline}  {SEND %an7%From:  %an1%%dline^J^M}  {INCR count}
  104.   {READ dline}  {SEND %an7%Subj:  %an4%%dline^J^M}  {INCR count}
  105.   {READ dline}  {SEND %an7%Date:  %an0%%dline^J^M}  {INCR count}
  106. {:DF}  {PUSH}
  107.   {SETE-P0 esc_menu}
  108. {:DF1}  {READ dline}
  109.   {COMP e,1}  {IFCO ,DF8}
  110.   {CALL list_quote}
  111.   {SEND ^M%dline%%an0^J^M}
  112.   {GOTO DF10}
  113. {:DF8}  {SEND ^M%dline^J^M}
  114. {:DF10}  {INCR count}
  115.   {COMP count,22}  {IFCO DF4}
  116.   {GOTO DF1}
  117. {:DF2}  {RCLO}
  118. {:DF3}  {SETV dline}  {SETV ch}  {SETV count}
  119.   {SETV open}
  120.   {POPS}
  121.   {RETURN}
  122.  
  123. {:DF4}  {SETV count,0}
  124.   {SEND More? (Y,n) : }
  125.   {SETG 120,DF1}
  126. {:DF6}  {CALL cd}
  127.   {GETS-H ch,1,DF7}
  128.   {COMP ch,y}  {IFCO DF7}
  129.   {COMP ch,n}  {IFCO DF7}
  130.   {SEND ^H}  {GOTO DF6}
  131. {:DF7}  {SEND ^M                  ^M}
  132.   {COMP ch,n}   {IFCO DF2,DF1}
  133. {:DF5}  {SEND ^J^M^G%an1%Error: %an7%File not found: %dump_file}
  134.   {CALL press_any_key}
  135.   {RETURN}
  136.  
  137. {:list_quote}
  138.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}  {IFCO ,LQ1}
  139.   {SETV dline,%an4▀▀▀▀▀▀ %an7%Quote %an4▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀%an7}
  140.   {GOTO LQ2}
  141. {:LQ1}  {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}  {IFCO ,LQ2}
  142.   {SETV dline,%an4▄▄▄▄▄▄ %an7%UnQuote %an4▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄%an0}
  143. {:LQ2}  {RETURN}
  144.  
  145. {:screen_full}
  146.   {SEND %an4%More? %an7(Y,n) %an0: }
  147.   {CALL cd}
  148.   {SETG 120,SF3}
  149. {:SF1}  {GETS-H ch,1,SF2}
  150.   {COMP ch,y}  {IFCO SF4}
  151.   {COMP ch,n}  {IFCO SF4}
  152.   {SEND ^H}  {GOTO SF1}
  153. {:SF2}  {SETV ch,y}  {GOTO SF4}
  154. {:SF3}  {SETV ch,n}
  155. {:SF4}  {SEND ^M                  ^M}
  156.   {RETURN}
  157.  
  158. {:expert_tog}
  159.   {COMP expert,ON}
  160.   {IFCO ET1}
  161.   {SETV expert,ON}
  162.   {GOTO ET2}
  163. {:ET1}  {SETV expert,OFF}
  164. {:ET2}  {RETURN}
  165.  
  166. {:esc_menu}
  167.   {IFCA ,ESM}  {SEND ^J^M%an7%%an9%Time comes to a grinding halt!  %an0}
  168. {:ESM}  {SETE-P0 ESM2}  {SETV ch}
  169.   {PARM ,,,,0}
  170.   {INPU ch, PRESS:  [ENTER] to CHAT, [U]seredit, [D]OS, [H]angup}
  171.   {COMP ch,h}  {IFCO ESM4}
  172.   {COMP ch,d}  {IFCO ESM5}
  173.   {COMP on,}   {IFCO ESM}
  174.   {COMP ch,u}  {IFCO ESM3}
  175.   {COMP ch,}   {IFCO ,ESM}
  176. {:ESM1}  {COMP cf,}   {IFCO CT8,ESM}
  177. {:ESM2}  {SETE-P0 esc_menu}
  178.   {IFCA ,ESM6}  {SEND %an3%Then suddenly...}  {PAUS 1}
  179. {:ESM6}  {RETURN}
  180. {:ESM5}  {SHEL}  {GOTO ESM}
  181. {:ESM3}  {COMP open,y}  {IFCO ESM}
  182. {:ESM8}  {COMP login_name,}  {IFCO ESM}
  183.   {SETV lname,%login_name}  {INPU lname,EDIT: Handle  (3-30 characters)}
  184.   {COMP lname,1}  {IFCO-GE ESM8}
  185.   {LENG %lname}  {COMP _len,3}  {IFCO-L ESM8}
  186.   {LENG %lname}  {COMP _len,30}  {IFCO-G ESM8}
  187. {:ESM9}  {SETV temp,%protocol}  {INPU temp,EDIT: Protocol  (1 letter)}
  188.   {LENG %temp}  {COMP _len,1}  {IFCO ,ESM9}
  189. {:ESM0}  {SETV ch,%al}  {INPU ch,EDIT: Access Level  (0-999)}
  190.   {COMP ch,999}  {IFCO-G ESM0}
  191.   {SETV al,%ch}
  192.   {SETV protocol,%temp}
  193.   {SETV row,%_row}  {SETV col,%_col}  {DISP 2,2,0F,%an9 * Saving * }
  194.   {COMP lname,%login_name}  {IFCO ESM7}
  195.   {SETV login_name,%lname}
  196.   {SETE time_out}
  197.   {CALL update_clist}
  198. {:ESM7}  {CALL write_user}
  199.   {DISP 2,2,07,            }
  200.   {DISP %row,%col,,}
  201.   {SETV row}  {SETV col}  {SETV lname}
  202.   {GOTO ESM}
  203. {:ESM4} {SETV s,2}  {GOTO time_out}
  204.  
  205. {:get_name}
  206.   {PUSH}
  207. {:GN1}  {CALL cd}
  208.   {SEND ^J^M%an7%Enter your name or handle: %an4}
  209.   {SETG 120,time_out}
  210. {:GN0}  {GETS lname,30,GN0}
  211.   {SEND ^J^M%an3%Checking...}
  212.   {LENG %lname}  {COMP %_len,3}  {IFCO-L GN2}
  213.   {COMP lname,new}  {IFCO GN6}
  214.   {COMP lname,1}  {IFCO-GE GN6}
  215.   {IFEX %datadir%CALLERS.LST,,GN5}
  216.   {ROPE %datadir%CALLERS.LST,GN5}
  217. {:GN4}  {READ ch}  {READ dline}  {READ cline}
  218.   {COMP lname,%dline}  {IFCO GN3,GN4}
  219. {:GN5}  {SEND %an7 OK}
  220.   {SETV dline}  {SETV cline}
  221.   {POPS}
  222.   {RETURN}
  223. {:GN2}  {SEND ^G%an1%Invalid handle.  %an0%Must be at least 3 characters long.}
  224.   {GOTO GN1}
  225. {:GN3}  {SEND ^G%an1%Sorry!  That handle is being used already.^J^M}
  226. {:GN6}  {SEND %an1%Please choose something else...}
  227.   {GOTO GN1}
  228.  
  229. {:get_pass}
  230.   {SETG 60,time_out}
  231.   {CALL cd}
  232.   {GETS-P pass,15}
  233.   {RETURN}
  234.  
  235. {:time_out}
  236.   {POPS-C}
  237.   {CAPT n}
  238.   {STAT n}
  239.   {COMP open,y}  {IFCO ,TKO1}  {RCLO}
  240. {:TKO1}  {COMP open,yy}  {IFCO ,TKO2}  {SETV f,1}  {CALL BB13}
  241. {:TKO2}  {COMP on,1}  {IFCO ,bbs}
  242.   {COMP _ela,%tlc}  {IFCO-GE gby2}
  243.   {COMP userno,1}  {IFCO-GE ,gbye}
  244.   {IFCA ,GB2}
  245.   {COMP s,2}  {IFCO gbye,gby}
  246.  
  247. {:err}  {RCLO}
  248. {:err1}  {CLEA}  {SEND ^G^G}
  249.   {SPOC n}  {LOCA n}
  250.   {DISP 2,2,0C,MacroBBS must be configured for your system before it will work properly.}
  251.   {DISP 3,2,07,You should only have to do this once to initialize the system. But you may}
  252.   {DISP 4,2,07,re-configure MacroBBS whenever you want to make changes.}
  253.   {DISP 6,2,0F,PLEASE be sure to answer ALL questions accurately and make SURE}
  254.   {DISP 7,2,0F,all disk directories that you specify do indeed exist on your disk.}
  255.   {PAUS 3}
  256. {:ER0}  {DISP 10,2,07,Press the SPACEBAR to run the CONFIG module.... ^H}
  257. {:ER!}  {GETS-H ch,1,ER1}
  258.   {COMP ch, }  {IFCO ER2,ER0}
  259. {:ER2}  {MACL MACROCFG.MAC,start}
  260.  
  261. {:read_user}
  262.   {ROPE %userdir%%userno.MHS,RU1}
  263.   {READ login_name}
  264.   {READ password}
  265.   {READ al}
  266.   {READ protocol}
  267.   {READ expert}
  268.   {READ a}
  269.   {READ fa}
  270.   {RCLO}
  271. {:RU1}  {RETURN}
  272.  
  273. {:write_user}
  274.   {WOPE %userdir%%userno.MHS}
  275.   {WRIT %login_name}
  276.   {WRIT %password}
  277.   {WRIT %al}
  278.   {WRIT %protocol}
  279.   {WRIT %expert}
  280.   {WRIT %a}
  281.   {WRIT %fa}
  282.   {WCLO}
  283.   {RETURN}
  284.  
  285. {:read_data}
  286.   {ROPE %datadir%CALLER.DAT,RD1}
  287.   {READ %callno}
  288.   {READ %tdcalls}
  289.   {READ pub}
  290.   {READ pvt}
  291.   {READ ttu}
  292.   {READ tf}
  293.   {READ ldate}
  294.   {READ stime}
  295.   {READ ftime}
  296.   {READ l_caller}
  297.   {READ luserno}
  298.   {READ uhigh}
  299.   {READ mhigh}
  300.   {READ fhigh}
  301.   {RCLO}
  302. {:RD1}  {RETURN}
  303.  
  304. {:write_data}
  305.   {WOPE %datadir%CALLER.DAT}
  306.   {WRIT %callno}
  307.   {WRIT %tdcalls}
  308.   {WRIT %pub}
  309.   {WRIT %pvt}
  310.   {WRIT %ttu}
  311.   {WRIT %tf}
  312.   {WRIT %ldate}
  313.   {WRIT %stime}
  314.   {WRIT %ftime}
  315.   {WRIT %login_name}
  316.   {WRIT %userno}
  317.   {WRIT %uhigh}
  318.   {WRIT %mhigh}
  319.   {WRIT %fhigh}
  320.   {WCLO}
  321.   {RETURN}
  322.  
  323. {:new_user}
  324.   {CALL cls}  {SETV new,1}
  325. {:NU4}  {SETV dump_file,%datadir%NEWUSER%mnu.mnu}
  326.   {IFEX %dump_file,,NU0}
  327.   {CALL ascii_ul}
  328. {:NU0}  {CALL get_name}  {SETV login_name,%lname}  {SETV lname}
  329. {:NU10}  {PUSH}
  330.   {SEND ^J^M%an4%Choose a password.  You will need it each time you log-on.^J^M}
  331. {:NU1}  {SEND %an0%Password: }
  332. {:NU7}  {CALL cd}
  333.   {GETS password,15,NU7}
  334.   {LENG %password}  {COMP %_len,4}  {IFCO-GE NU3}
  335.   {SEND ^J^M%an1%Invalid password.  %an0%Must be at least 4 characters long.^J^M}
  336.   {GOTO NU1}
  337. {:NU3}  {MACL MACRODAT.MAC,get_protocol}
  338. {:NU11}  {SETV count,0}  {SETV al,0}
  339. {:NU2}  {INCR count}  {IFEX %userdir%%count.MHS,NU2}
  340.   {SETV userno,%count}
  341.   {SEND ^J^M^J%an3%Your Caller ID# is%an0 %userno}
  342.   {COMP userno,%uhigh}   {IFCO-LE NU9}
  343.   {SETV uhigh,%userno}
  344.   {CALL add_index}
  345. {:NU9}  {SEND ^J^M%an1%Saving your information...}
  346.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT ▒▒ NEW CALLER ▒▒   %login_name #%userno}  {WCLO}
  347. {:NU6}  {CALL write_user}
  348.   {WOPE-A %datadir%CALLERS.LST}
  349.   {WRIT %userno}
  350.   {WRIT %login_name}
  351.   {WRIT %password}
  352.   {WCLO}
  353.   {CALL write_data}
  354.   {SEND ^J^M%an0%Please re-enter your name and password for verification.^J^M}
  355. {:NU8}  {GOTO login_user}
  356.  
  357. {:add_index}
  358.   {SETV mic,0}
  359. {:AI1}  {INCR mic}
  360.   {COMP mic,%mhigh}  {IFCO-G AI2}
  361.   {WOPE-A %msgsdir%A%mic.IND}  {WRIT 1}  {WCLO}
  362.   {GOTO AI1}
  363. {:AI2}  {SETV mic}
  364.   {RETURN}
  365.  
  366. {:login_user}
  367.   {PUSH}
  368.   {SETV success}
  369.   {SETV tries,0}
  370. {:LU0}  {INCR tries}
  371.   {COMP tries,3}  {IFCO-G LU4}
  372.   {SEND ^J^M%an2   Login: %an7}
  373.   {SETG 60,gbye}
  374.   {CALL cd}
  375.   {GETS to,30,LU0}
  376.   {COMP to,new}  {IFCO ,LU8}
  377.   {COMP new,1}  {IFCO LU0,new_user}
  378. {:LU8}  {SEND ^J^M^J%an3%%an9%Verifying}
  379.   {CALL match_name_userno}
  380.   {SEND ^M}
  381.   {COMP t,1}  {IFCO LU11}
  382. {:LU6}  {SEND %an0  Type "%an7%%an9%NEW%an0" if you're 100%% POSITIVE you logged-in correctly.^J^M}
  383.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT ▒░▒░▒  NAME NOT FOUND: "%to"  ▒░▒░▒}  {WCLO}
  384.   {GOTO LU0}
  385. {:LU11}  {POPS}
  386. {:LU7}  {PUSH}
  387.   {SETV ptries,0}  {SETV t}
  388. {:LU3}  {INCR ptries}  {COMP ptries,3}  {IFCO-G LU4}
  389.   {SEND ^M%an2%Password: %an7}
  390.   {CALL get_pass}
  391.   {COMP dline,%pass}  {IFCO LU5}
  392.   {SEND ^J^M%an1%Incorrect password.^J^M^J}
  393.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT ▒░▒░▒  ENTERED INCORRECT PASSWORD: "%password"  ▒░▒░▒}  {WCLO}
  394.   {GOTO LU3}
  395. {:LU5}  {SETV userno,%tono}
  396.   {CALL read_user}
  397.   {SETV success,true}
  398.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %login_name #%userno}  {WCLO}
  399. {:LU4}  {SETV tries}  {SETV ptries}  {SETV lname}  {SETV pass}
  400.   {SETV dline}  {SETV to}  {SETV tono}
  401.   {POPS}
  402.   {GOTO BB}
  403.  
  404. {:find_line}
  405.   {SEND %an7%Searching...}
  406.   {ROPE %datadir%RTEMP.000,FL7}
  407.   {READ edline}  {READ edline}  {READ edline}
  408.   {READ edline}  {READ edline}  {READ edline}
  409.   {SETV ccount,0}
  410. {:FL6}  {INCR ccount}
  411.   {READ edline}
  412.   {COMP ccount,%fline}  {IFCO ,FL6}
  413.   {RCLO}
  414. {:FL7}  {SEND ^M              ^M}
  415.   {SETV dline,%edline}
  416.   {CALL list_quote}
  417.   {SETV edline,%dline}
  418.   {SETV dline}
  419.   {RETURN}
  420.  
  421. {:line_update}
  422.   {SEND %an7%Updating...}
  423.   {ROPE %datadir%RTEMP.000,FL3}
  424.   {WOPE %datadir%WTEMP.000}
  425.   {READ dline}  {WRIT %dline}  {READ dline}  {WRIT %dline}
  426.   {READ dline}  {WRIT %dline}  {READ dline}  {WRIT %dline}
  427.   {READ dline}  {WRIT %dline}  {READ dline}  {WRIT %dline}
  428.   {COMP t,2}  {IFCO ,FL}
  429.   {COMP ccount,0}  {IFCO FL5}
  430. {:FL}  {SETV temp,0}
  431. {:FL0}  {INCR temp}
  432.   {READ dline}
  433.   {COMP temp,%ccount}  {IFCO FL1}
  434.   {WRIT %dline}
  435.   {GOTO FL0}
  436. {:FL1}  {COMP t,1}  {IFCO FL4}
  437.   {COMP t,2}  {IFCO ,FL5}
  438.   {WRIT %dline}
  439. {:FL5}  {WRIT %edline}
  440. {:FL2}  {INCR ccount}
  441. {:FL4}  {READ dline}  {WRIT %dline}
  442.   {GOTO FL2}
  443. {:FL3}  {WCLO}
  444.   {EXEC-N COPY %datadir%WTEMP.000 %datadir%RTEMP.000}
  445.   {SETV dline}
  446.   {SEND ^M              ^M}
  447.   {RETURN}
  448.  
  449. {:edit_system}
  450.   {SEND ^M%an0%Loading...}
  451.   {WCLO}
  452.   {EXEC-N COPY %dump_file %datadir%WTEMP.000}
  453.   {EXEC-N COPY %datadir%WTEMP.000 %datadir%RTEMP.000}
  454.   {SEND ^M                ^M}
  455. {:ES0}  {SETV t}
  456.   {SEND ^J^M%an1%Editor: %an7%A%an0%bort,%an7%C%an0%ont,%an7%D%an0%elete,%an7%E%an0%dit,%an7%I%an0%nsert,%an7%L%an0%ist,%an7%R%an0%eplace,%an7%S%an0%ave: %an3}
  457. {:ES1}  {SETG 120,time_out}
  458.   {GETS-H ch,1,ES1}
  459.   {COMP ch,a}  {IFCO abort}
  460.   {COMP ch,c}  {IFCO continue}
  461.   {COMP ch,d}  {IFCO delete}
  462.   {COMP ch,e}  {IFCO edit_line}
  463.   {COMP ch,i}  {IFCO insert}
  464.   {COMP ch,l}  {IFCO list}
  465.   {COMP ch,r}  {IFCO replace}
  466.   {COMP ch,s}  {IFCO save}
  467. {:ES3}  {SEND ^H}   {GOTO ES1}
  468.  
  469. {:abort}
  470.   {SEND bort^J^M}
  471.   {SETV edline}  {SETV fline}
  472.   {EXEC-N DEL %datadir%?TEMP.000}
  473.   {WOPE %dump_file}
  474.   {GOTO BB13}
  475.  
  476. {:continue}
  477.   {COMP lineno,%max}  {IFCO-G ES3}
  478.   {SEND ontinue^J^M}
  479.   {SEND %an7%One moment...}
  480.   {EXEC-N COPY %datadir%WTEMP.000 %dump_file}
  481.   {SEND ^M%an7%Ok.  Carry on...  :)%an3^J^M}
  482.   {WOPE-A %dump_file}
  483.   {GOTO BB27}
  484.  
  485. {:delete}
  486.   {SEND elete^J^M^J}
  487. {:D5}  {SEND ^M%an4%Line # to DELETE:%an0    ^H^H^H}
  488.   {GETS fline,3,R1}
  489.   {COMP fline,1}  {IFCO-L D5}
  490.   {COMP fline,%lineno}  {IFCO-G D5}
  491.   {SEND ^J^M}
  492.   {CALL find_line}
  493.   {SEND ^J^M%an0%%edline^J^M}
  494.   {SEND ^J^M%an7%DELETE this line? %an0(%an7%Y%an0,n) :%an7 }
  495. {:D3}   {GETS-H ch,1,D4}
  496.   {COMP ch,y}  {IFCO D4}
  497.   {COMP ch,n}  {IFCO R1}
  498.   {SEND ^H}  {GOTO D3}
  499. {:D4}  {SEND ^J^M}
  500.   {SETV edline}
  501.   {SETV t,1}  {CALL line_update}  {DECR lineno}
  502.   {SEND %an0%Line deleted.^J^M}
  503. {:D1}   {GOTO ES0}
  504. {:D2}   {SEND ^H}  {GOTO D3}
  505.  
  506. {:edit_line}
  507.   {SEND dit^J^M^J}
  508. {:EL5}  {SEND ^M%an4%Line # to EDIT:%an0    ^H^H^H}
  509.   {GETS fline,3,R1}
  510.   {COMP fline,1}  {IFCO-L EL5}
  511.   {COMP fline,%lineno}  {IFCO-G EL5}
  512.   {SEND ^J^M}
  513.   {CALL find_line}
  514.   {SEND ^J^M%an5%Line %fline reads:^J^M}
  515. {:EL0}  {SEND %an0%%edline^J^M}
  516.   {SEND ^J^M%an7%Type in the string to replace or press ENTER to abort.^J^M%an3}
  517.   {GETS oldstr,60,EL1}
  518.   {INST edline,%oldstr}
  519.   {COMP %_pos,0}  {IFCO-G EL2}
  520.   {SEND ^J^M^J%an1%String not found.^J^M^J}
  521.   {GOTO EL0}
  522. {:EL2}  {SETV spos,%_pos}
  523.   {LENG %oldstr}  {SETV olen,%_len}
  524.   {SETV mx,0}
  525.   {SETV ch,79}  {LENG %edline}  {DECR ch,%_len}
  526.   {INCR mx,%ch}  {INCR mx,%olen}
  527.   {SEND ^J^M^J%an7%Type replacement string or press ENTER to cut.^J^M%an3}
  528.   {GETS newstr,%mx,EL3}
  529. {:EL3}  {SEND ^J^M}
  530.   {DECR spos}
  531.   {SUBS lstr,1,%spos,%edline}
  532.   {INCR spos,%olen}  {INCR spos}
  533.   {SUBS rstr,%spos,100,%edline}
  534.   {SETV edline,%lstr%%newstr%%rstr%}
  535.   {CALL line_update}
  536.   {SETV ccount,%fline}
  537.   {GOTO EL0}
  538. {:EL1}  {SETV olen} {SETV spos} {SETV lstr} {SETV rstr} {SETV newstr} {SETV mx}
  539.   {GOTO ES0}
  540.  
  541. {:insert}
  542.   {COMP lineno,%max}  {IFCO-G ES3}
  543.   {SEND nsert^J^M^J}
  544. {:I4}  {SEND ^M%an4%Line # to insert BEFORE:%an0    ^H^H^H}
  545.   {GETS fline,3,R1}
  546.   {COMP fline,1}  {IFCO-L I4}
  547.   {COMP fline,%lineno}  {IFCO-G I4}
  548.   {SEND ^J^M}
  549.   {COMP fline,1}  {IFCO I2}
  550.   {DECR fline}  {CALL find_line}  {INCR fline}  {GOTO I3}
  551. {:I2}  {SETV edline,*** BEGINNING OF MESSAGE ***}
  552. {:I3}  {SEND ^J^M%an7%INSERTING between these lines:}
  553.   {SEND ^J^M^J%an0%%edline^J^M}
  554.   {CALL find_line}
  555.   {SEND ^J^M%an0%%edline^J^M}
  556.   {SEND ^J^M%an7%Type line to insert or press ENTER to abort.^J^M%an3}
  557.   {GETS edline,79,I1}
  558.   {SEND ^J^M}
  559.   {DECR ccount}
  560.   {SETV t,2}  {CALL line_update}  {INCR lineno}
  561.   {SEND %an0%Line inserted.^J^M}
  562. {:I1}  {GOTO ES0}
  563.  
  564. {:list}
  565.   {SEND ist^J^M}
  566.   {SEND ^J^M%an7%Include line numbers? %an0(y,%an7%N%an0) : }
  567. {:L1}  {GETS-H temp,1,L4}
  568.   {COMP temp,y}  {IFCO L4}
  569.   {COMP temp,n}  {IFCO L4}
  570.   {SEND ^H}  {GOTO L1}
  571. {:L4}  {ROPE %datadir%RTEMP.000,L10}
  572.   {READ dline}  {READ dline}  {READ dline}
  573.   {READ dline}  {READ dline}  {READ dline}
  574.   {SEND ^J^M^J%an3%Your message reads:^J^M^J%an0}
  575.   {SETV ccount,0}
  576. {:L5}  {SETV count,0}
  577. {:L6}  {INCR ccount}  {INCR count}
  578.   {READ dline}  {CALL list_quote}  {SEND %dline%%an0}
  579.   {COMP temp,y}  {IFCO ,L7}
  580.   {SEND ^M%an7%%ccount:%an0}
  581. {:L7}  {SEND ^J^M}
  582.   {COMP count,21}  {IFCO ,L6}
  583.   {CALL screen_full}
  584.   {COMP ch,y}  {IFCO L5}
  585.   {RCLO}
  586. {:L10}  {SETV dline}
  587.   {GOTO ES0}
  588.  
  589. {:replace}
  590.   {SEND eplace^J^M^J}
  591. {:R2}   {SEND ^M%an4%Line # to REPLACE:%an0    ^H^H^H}
  592.   {GETS fline,3,R1}
  593.   {COMP fline,1}  {IFCO-L R2}
  594.   {COMP fline,%lineno}  {IFCO-G R2}
  595.   {SEND ^J^M}
  596.   {CALL find_line}
  597.   {SEND ^J^M%an5%Line %fline reads:^J^M}
  598.   {SEND %an0%%edline^J^M}
  599.   {SEND ^J^M%an7%Type new line or press ENTER to abort.^J^M%an3}
  600.   {GETS edline,79,I1}
  601.   {SEND ^J^M}
  602.   {CALL line_update}
  603.   {SEND %an0%Line replaced.}
  604. {:R1}   {SEND ^J^M}
  605.   {GOTO ES0}
  606.  
  607. {:save}
  608.   {SEND ave^J^M^J%an1%Saving...}
  609.   {SETV edline}  {SETV fline}
  610.   {EXEC-N COPY %datadir%WTEMP.000 %dump_file}
  611.   {EXEC-N DEL %datadir%?TEMP.000}
  612.   {WOPE-A %dump_file}
  613.   {GOTO BB11}
  614.  
  615. {:quote}
  616.   {COMP r,1}  {IFCO Q1}
  617.   {INST %dump_file,.MSG}  {IFCO E4,BB27}
  618. {:Q1}  {ROPE %quotemsg,Q7}
  619.   {READ dline}  {READ dline}  {READ dline}
  620.   {READ dline}  {READ dline}  {READ dline}
  621.   {SETV qcount,0}
  622.   {SEND ^M    ^M%an7%%an12                                                                              ^M}
  623.   {SEND                              Quoting %to ...^J^M}
  624.   {SEND %an7%%an12           SPACEBAR = Quote Line            N = Skip Line     Q = Quit        ^J^M}
  625. {:Q2}  {SEND ^M%an0%%an13                                                                               ^M}
  626.   {READ dline}
  627.   {COMP mnu,a}  {IFCO Q10}
  628.   {SETV an4}  {SETV an7}
  629. {:Q10}  {CALL list_quote}
  630.   {GOTO Q5}
  631. {:Q5}  {SEND %an0%%dline}
  632.   {SETG 60,time_out,n}
  633. {:Q6}  {GETS-H ch,1,Q6}
  634.   {COMP ch, }  {IFCO Q3}
  635.   {COMP ch,n}  {IFCO Q2}
  636.   {COMP ch,q}  {IFCO ,Q6}
  637.   {RCLO}
  638. {:Q7}  {COMP mnu,a}  {IFCO Q11}
  639.   {CALL ansi}
  640. {:Q11}  {COMP qcount,0}  {IFCO Q8}
  641.   {WRIT &▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}
  642.   {WRIT  }
  643.   {INCR lineno,2}
  644. {:Q8}  {SETV qcount}
  645.   {SEND ^J^M%an7%Finished quoting.  Please continue your message ...^J^M}
  646.   {GOTO BB27}
  647.  
  648. {:Q3}  {INCR qcount}
  649.   {COMP qcount,1}  {IFCO ,Q9}
  650.   {WRIT &▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}
  651.   {INCR lineno}
  652. {:Q9}  {WRIT %dline}
  653.   {INCR lineno}
  654.   {GOTO Q2}
  655.  
  656. {:chat}
  657.   {SETV temp,0}   {SETV ccount,0}
  658.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Chat request}  {WCLO}
  659.   {SEND ^J^M^J%an4%Paging %sysop ...^J^M}
  660.   {SPOC n}  {SEND %an3%Press %an0[ESC]%an3 then %an0[ENTER]%an3 to chat with%an7 %login_name %an3...^J^M}  {SPOC y}
  661. {:CT7}  {INCR ccount}  {SETV-S ch,an%ccount}
  662.   {SEND %ch█}
  663.   {SEND ^G}  {SEND ^G}  {SEND ^G}  {PAUS 2}
  664.   {COMP ccount,5}  {IFCO-G ,CT7}
  665. {:CT6}  {SETV chat,CHAT}
  666.   {SEND ^M%an0%Sorry, %sysop isn't around right now.^J^M}
  667.   {SEND %an0%However, the chat flag has been set.^J^M^J}
  668.   {GOTO CT9}
  669. {:CT8}  {SETV tl,%_ela}
  670.   {SETG 240,time_out}
  671.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Started chat}  {WCLO}
  672.   {COMP cb,y}  {IFCO ,CT14}
  673.   {CAPT y,%datadir%CHAT.LOG}
  674. {:CT14}  {SEND ^J^M^J%an3%You've just entered . . . %an7%The Twilight Zone.  %an3%Reality vanishes.^J^M}
  675.   {SEND %an2(Type "%an0%bye!%an2" on a blank line to exit when desired.)^J^M}
  676.   {SETV cf,1}  {SETV co1,%an0}  {SETV co2,%an3}
  677.   {SETE-P0 esc_menu}
  678.   {PUSH}
  679. {:CT2}  {COMP cf,1}  {IFCO CT3}
  680.   {SEND %co2}  {SETV cf,1}  {GOTO CT4}
  681. {:CT3}  {SEND %co1}  {SETV cf,2}
  682. {:CT4}  {SETV cline}
  683. {:CT5}  {SEND ^J}
  684. {:CT13}  {SEND ^M%cline}
  685.   {GETS-AH cline,78,CT2}
  686.   {COMP cline,/c}  {IFCO switch_c}
  687.   {COMP cline,bye!}  {IFCO CT1}
  688.   {COMP cline,bye!!}  {IFCO time_out}
  689.   {COMP cline,/scroll}  {IFCO view_scroll}
  690.   {COMP cline,NO CARRIER}  {IFCO time_out}
  691.   {LENG %cline}  {COMP %_len,77}  {IFCO-LE CT4}
  692.   {SETV ccount,80}  {SETV dline,0}  {SETV cline, %cline}
  693. {:CT11} {DECR ccount}  {INCR dline}
  694.   {COMP ccount,60}  {IFCO-LE CT4}
  695.   {SUBS ch,%ccount,1,%cline}
  696.   {COMP ch, }  {IFCO ,CT11}
  697.   {COMP ccount,79}  {IFCO CT4}
  698.   {INCR ccount}
  699.   {SUBS cline,%ccount,%dline,%cline}
  700.   {SETV ccount,0}
  701. {:CT12} {INCR ccount}  {SEND ^H}
  702.   {COMP ccount,%dline}  {IFCO ,CT12}
  703.   {GOTO CT5}
  704. {:CT1}  {CAPT n}
  705.   {SETV ch,%_ela}  {DECR ch,%tl}  {INCR tlc,%ch}  {SETV tl}
  706.   {SEND ^J^M^J%an3%You've just left . . . %an7%The Twilight Zone.  %an3%Reality restored.^J^M^J}
  707.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Ended chat}  {WCLO}
  708.   {SETV cf}  {SETV co1}  {SETV co2}  {SETV chat}  {SETV cline}
  709.   {POPS}
  710. {:CT9}  {SETV ccount}
  711.   {SETE-P0 esc_menu}
  712.   {CALL press_any_key}
  713.   {RETURN}
  714.  
  715. {:switch_c}
  716. {:SW1}  {SEND ^M%an0(0 %an1%1 %an2%2 %an3%3 %an4%4 %an5%5 %an6%6 %an7%7%an0)  ^H}
  717.   {GETS-H ch,1,SW1}
  718.   {COMP ch,0}  {IFCO-L SW1}
  719.   {COMP ch,7}  {IFCO-G SW1}
  720.   {SEND ^M                    ^M}
  721.   {COMP cf,1}  {IFCO ,SW3}
  722.   {SETV-S co2,an%ch}  {SEND %co2}  {GOTO SW4}
  723. {:SW3}  {SETV-S co1,an%ch}  {SEND %co1}
  724. {:SW4}  {SETV cline}
  725.   {GOTO CT13}
  726.  
  727. {:update_clist}
  728.   {ROPE %datadir%CALLERS.LST,UC1}
  729.   {WOPE %datadir%TEMP.000}
  730. {:UC2}  {READ ch}  {READ cline}  {READ dline}
  731.   {COMP ch,%userno}  {IFCO UC3}
  732.   {WRIT %ch}  {WRIT %cline}  {WRIT %dline}  {GOTO UC2}
  733. {:UC3}  {COMP s,1}  {IFCO UC5}
  734. {:UC4}  {WRIT %ch}
  735.   {WRIT %login_name}
  736.   {WRIT %password}
  737. {:UC5}  {READ dline}  {WRIT %dline}  {GOTO UC5}
  738. {:UC1}  {WCLO}
  739.   {EXEC-N COPY %datadir%TEMP.000 %datadir%CALLERS.LST}
  740.   {EXEC-N DEL %datadir%TEMP.000}
  741.   {RETURN}
  742.  
  743. {:main_menu}
  744.   {PUSH}
  745.   {SETE-P0 esc_menu}
  746. {:MM1}  {CALL cd}
  747. {:MM9}  {COMP expert,ON}  {IFCO MM2}
  748. {:MM15}  {CALL cls}
  749.   {SEND ^J^M^J^J^J^J}
  750.   {SEND ^J^M%an7                                   Main Menu^J^M}
  751.  
  752.   {SEND ^J^M%an0  [%an3%M%an0] Message Base   [%an3%R%an0] Read E-mail    [%an3%V%an0] Version/BBS    [%an3%T%an0] Time On-line}
  753.   {SEND ^J^M%an0  [%an3%F%an0] File Base      [%an3%C%an0] Chat           [%an3%Y%an0] Your Data      [%an3%G%an0] Goodbye}
  754.   {COMP al,0}  {IFCO MM16}
  755.   {SEND ^J^M%an0  [%an3%H%an0] Hall of Fame   [%an3%S%an0] Send E-mail    [%an3%I%an0] Intromsg       [%an3%L%an0] List Members}
  756.  
  757. {:MM16}  {SEND ^J^M^J%an0                     [%an3%A%an0] ANSI Toggle    [%an3%X%an0] Xpert Toggle}
  758. {:MM16}  {SEND ^J^M%an0                     [%an3*%an0] Quick log-off (from all menus)}
  759.  
  760.   {COMP al,%dal}  {IFCO-L MM2}
  761.   {SEND ^J^M^J%an0                                    [%an3%D%an0] DOS}
  762. {:MM2}  {SEND ^J^M^J%an3%Main Menu  %an0%%_tim^J^M}
  763.   {SETV ch,%tlc}  {DECR ch,%_ela}
  764.   {SEND %an0%Mins Left: %ch^J^M}
  765. {:MM8}  {SEND ^M}  {COMP expert,ON}  {IFCO ,MM17}
  766.   {SEND %an3(%an7?%an3%=menu) }
  767. {:MM17}  {SEND %an7%MM Command:  ^H}
  768.   {SETG 120,time_out}
  769. {:MM3}  {CALL cd}
  770.   {GETS-H ch,1,MM3}
  771.   {COMP ch,*}  {IFCO time_out}
  772.   {COMP ch,a}  {IFCO color_tog}
  773.   {COMP ch,c}  {IFCO chat}
  774.   {COMP ch,f}  {IFCO file_tran}
  775.   {COMP ch,g}  {IFCO MM5}
  776.   {COMP ch,m}  {IFCO msg_base}
  777.   {COMP ch,r}  {IFCO email}
  778.   {COMP ch,t}  {IFCO time_on}
  779.   {COMP ch,y}  {IFCO user_info}
  780.   {COMP ch,x}  {IFCO expert_tog}
  781.   {COMP ch,v}  {IFCO ver}
  782.   {COMP ch,?}  {IFCO MM15}
  783.     {COMP al,0}  {IFCO MM8}
  784.   {COMP ch,s}  {IFCO send_email}
  785.   {COMP ch,h}  {IFCO hall}
  786.   {COMP ch,i}  {IFCO intromsg}
  787.   {COMP ch,l}  {IFCO SP13}
  788.     {COMP al,%dal}  {IFCO-L MM8}
  789.   {COMP ch,d}  {IFCO dos,MM8}
  790.  
  791. {:MM5}  {SEND ^J^M^J%an7%Are you sure? %an0(%an7%Y%an0,n) :%an3 }
  792.   {SETG 60,MM10}
  793. {:MM13} {GETS-H ch,1,MM10}
  794.   {COMP ch,y}  {IFCO MM10}
  795.   {COMP ch,n}  {IFCO MM2}
  796.   {SEND ^H}  {GOTO MM13}
  797. {:MM10} {SEND ^J^M^J%an3%Drop a note to %sysop? %an0(y,%an7%N%an0) :%an3 }
  798.   {SETG 60,gby}
  799. {:MM11}  {GETS-H ch,1,gby}
  800.   {COMP ch,y}  {IFCO MM12}
  801.   {COMP ch,n}  {IFCO gby}
  802.   {SEND ^H}  {GOTO MM11}
  803. {:MM12} {SETV f,1}  {SETV to,%sysop}  {SETV tono,1}  {CALL SE4}  {GOTO gby}
  804.  
  805. {:color_tog}
  806.   {COMP mnu,a}  {IFCO ansi,ascii}
  807.   {RETURN}
  808.  
  809. {:time_on}
  810.   {SETV ch,%tlc}  {DECR ch,%_ela}
  811.   {SEND ^J^M^J%an1%Time on-line  : %an7%%_ela %an0%minute(s)}
  812.   {SEND ^J^M%an1%Time remaining: %an7%%ch %an0%minute(s)}
  813.   {GOTO MM2}
  814.  
  815. {:ver}
  816.   {SEND ^J^M^J%an3%Macro%an7%BBS %an0(tm) %an7%v1.2d %an0- %an7(C)opyright 1992 by Jeff Oberlee%an0 -%an7 All Rights Reserved}
  817.   {GOTO MM2}
  818.  
  819. {:msg_base}
  820.   {IFEX %msgsdir%A%a.BAS,MB2}
  821.   {IFEX %msgsdir%A*.BAS,,MM8}
  822.   {SETV a,0}
  823. {:MB1}  {INCR a}
  824.   {COMP a,%mhigh}  {IFCO-G MM8}
  825.   {IFEX %msgsdir%A%a.BAS,,MB1}
  826. {:MB2}
  827.   {ROPE %msgsdir%A%a.BAS,MB1}  {READ ch}  {READ ch}  {RCLO}
  828.   {COMP ch,%al}  {IFCO-G MB1}
  829.   {MACL MACROMSG.MAC,start}
  830.  
  831. {:file_tran}
  832.   {IFEX %filedir%F%fa.BAS,FX2}
  833.   {IFEX %filedir%F*.BAS,,MM8}
  834.   {SETV fa,0}
  835. {:FX1}  {INCR fa}
  836.   {COMP fa,%fhigh}  {IFCO-G MM8}
  837.   {IFEX %filedir%F%fa.BAS,,FX1}
  838. {:FX2}
  839.   {ROPE %filedir%F%fa.BAS,FX1}  {READ ch}  {READ ch}  {RCLO}
  840.   {COMP ch,%al}  {IFCO-G FX1}
  841.   {MACL MACROFIL.MAC,start}
  842.  
  843. {:hall}
  844.   {MACL MACROREG.MAC,start}
  845.  
  846. {:email}
  847.   {IFEX %msgsdir%E%userno-1.PVT,BB10}
  848.   {SEND ^J^M^J%an0  Sorry.  Your E-mailbox is empty.^J^M^J}
  849.   {GOTO MM8}
  850.  
  851. {:user_info}
  852.   {MACL MACRODAT.MAC,user_info}
  853.  
  854. {:intromsg}
  855.   {MACL MACRODAT.MAC,intro_msg}
  856.  
  857. {:dos}
  858.   {SEND ^J^M^J%an1%DOS password: %an0}
  859.   {CALL get_pass}
  860.   {COMP pass,%syspass}  {SETV pass}  {IFCO ,DS4}
  861.   {COMP mspeed,local}  {IFCO DS2}
  862.   {IFEX DOORWAY.EXE,,DS3}
  863.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : ▓▓ ENTERED DOS VIA DOORWAY.EXE ▓▓}  {WCLO}
  864.   {EXEC DOORWAY COM%_port /M:60 /G:ON /A:ON /V:D^U /O:T /S:* /C:DOS}
  865. {:DS1}  {RETURN}
  866. {:DS2}  {SHELL}
  867.   {GOTO MM2}
  868. {:DS3}  {SEND ^J^M%an1%DOORWAY.EXE is not installed.}
  869. {:DS4}  {GOTO MM2}
  870.  
  871. {:view_scroll}
  872.   {SCROLL}
  873.   {COMP on,}  {IFCO WF0,CT4}
  874.  
  875. {:m_init}
  876.   {CLEA}
  877.   {SPOC y}
  878.   {SETV count,0}
  879.   {DISP 2,1,0F,Initializing modem...}
  880.   {DISP 3,1,0F,}
  881.   {PARM %mspeed}
  882.   {SEND %initstr^J^M}
  883.   {GOTO WFC}
  884.  
  885. {:m_init_w}
  886.   {SPOC y}
  887.   {SETV count,0}
  888.   {CALL EO2}
  889.   {DISP 15,4,0F,%an9%Initializing} {PAUS 1}
  890.   {PARM %mspeed}
  891.   {SEND %initstr^J^M}
  892.   {CALL EO2}
  893.   {GOTO WF0}
  894.  
  895. {:edit_msgbs}
  896.   {CALL get_syspass}
  897.   {CALL EO2}
  898.   {MACL MACROCFG.MAC,EMA}
  899.  
  900. {:edit_caller}
  901.   {CALL get_syspass}
  902.   {CALL EO2}
  903.   {MACL MACROCFG.MAC,ECI}
  904.  
  905. {:edit_fareas}
  906.   {CALL get_syspass}
  907.   {CALL EO2}
  908.   {MACL MACROCFG.MAC,EFA}
  909.  
  910. {:call_log}
  911.   {CLEA}  {STAT y}
  912. {:CL1}  {DISP 3,6,0F, (%an3%T%an7)oday or (%an3%A%an7)ll?  ^H}
  913.   {SETG 120,WFC}
  914.   {GETS-H ch,1,WFC}
  915.   {COMP ch,t}  {IFCO CL2}
  916.   {COMP ch,a}  {IFCO ,CL1}
  917.   {SETV dump_file,%datadir%CALLERS.ALL}  {GOTO CL3}
  918. {:CL2}  {SETV dump_file,%datadir%CALLERS.TDY}
  919. {:CL3}  {CLEA}
  920.   {DISP 1,1,0F,Date       Time On     Time Off    Handle}
  921.   {DISP 2,1,07,}
  922.   {CALL dsp_file}
  923.   {CALL press_any_key}
  924.   {GOTO WFC}
  925.  
  926. {:use_log}
  927.   {CLEA}  {STAT y}
  928. {:USE1}  {DISP 3,6,0F, (%an3%D%an7%)ata or (%an3%C%an7%)hart?  ^H}
  929.   {SETG 120,WFC}
  930.   {GETS-H ch,1,WFC}
  931.   {COMP ch,c}  {IFCO USE2}
  932.   {COMP ch,d}  {IFCO ,USE1}
  933.   {CLEA}
  934.   {DISP 1,1,0F,Date        Calls    Active    Public   Private}
  935.   {DISP 2,1,07,}
  936.   {SETV dump_file,%datadir%STATS.LOG}
  937.   {CALL dsp_file}
  938. {:USE3}  {CALL press_any_key}
  939.   {GOTO WFC}
  940. {:USE2}  {ROPE %datadir%CHART.LOG,USE6}
  941. {:USE4}  {CLEA}
  942.   {SETV count,0}
  943.   {DISP 1,1,0F,Date  %an0├%an2--1--2--3--4--5--6--7--8--9--%an3%0--1--2--3--4--5--6--7--8--9--%an1%0--1--2--3--4}
  944.   {DISP 2,1,0F,}
  945. {:USE5}  {READ dline}
  946.   {SEND       %an0│  %an2░  ░  ░  ░  ░  ░  ░  ░  ░  %an3░  ░  ░  ░  ░  ░  ░  ░  ░  ░  %an1░  ░  ░  ░  ░^M}
  947.   {SEND %an0%%dline^J^M}
  948.   {INCR count}  {COMP count,21}  {IFCO-L USE5}
  949.   {SEND       %an0├%an2--1--2--3--4--5--6--7--8--9--%an3%0--1--2--3--4--5--6--7--8--9--%an1%0--1--2--3--4^J^M}
  950.   {CALL screen_full}
  951.   {COMP ch,y}  {IFCO USE4}
  952.   {RCLO}
  953. {:USE6}  {SEND       %an0├%an2--1--2--3--4--5--6--7--8--9--%an3%0--1--2--3--4--5--6--7--8--9--%an1%0--1--2--3--4}
  954.   {GOTO USE3}
  955.  
  956.  {:dos_shell}
  957.   {SHELL}
  958.   {GOTO WF0}
  959.  
  960. {:get_syspass}
  961.   {COMP on,}  {IFCO ,GS1}
  962.   {SPOC y}  {LOCA n}  {SEND ATM0H1^J^M}  {SPOC n}  {PAUS 4}  {LOCA y}
  963.   {CALL EO2}
  964. {:GS1}  {DISP 15,3,0C, PASSWORD%an0:       ^H^H^H^H^H^H}
  965.  
  966.   {SETG 120,GS}
  967.   {GETS-P ch,15,GS}
  968.   {COMP ch,%syspass}  {IFCO ,GS}
  969.   {RETURN}
  970. {:GS}  {POPS}
  971.   {GOTO m_init_w}
  972.  
  973. {:special}
  974.   {CALL get_syspass}
  975. {:SP0}  {CLEA}  {STAT n}  {SPOC n}
  976.   {CALL ansi}
  977.   {SETV login_name,%sysop}
  978.   {DISP  4,28,,%an1 Special Functions Menu}
  979.   {DISP  7,15,,%an7%1.%an3 Read SYSOP mail           %an7 5.%an3 Edit a letter}
  980.   {DISP  8,15,,%an7%2.%an3 Read another's mail       %an7 6.%an3 System logs}
  981.   {DISP  9,15,,%an7%3.%an3 Send e-mail to ...        %an7 7.%an3 List Members}
  982.   {DISP 10,15,,%an7%4.%an3 Mail count                %an7 8.%an3 Re-config MacroBBS}
  983. {:SP1}  {DISP 12,15,,%an4%Which? %an0(1-8, ENTER=quit) :%an7  ^H}
  984.   {SETG 120,m_init}
  985.   {GETS-H ch,1,m_init}
  986.   {COMP ch,1}  {IFCO SP2}
  987.   {COMP ch,2}  {IFCO SP3}
  988.   {COMP ch,3}  {IFCO SP7}
  989.   {COMP ch,4}  {IFCO SP8}
  990.   {COMP ch,5}  {IFCO SP9}
  991.   {COMP ch,6}  {IFCO SP14}
  992.   {COMP ch,7}  {IFCO SP13}
  993.   {COMP ch,8}  {IFCO ,SP1}
  994.  
  995. {:SP11}  {DISP 14,15,0F,Are you sure you want to alter the CONFIGURATION? (y/%an3%N%an7) :%an0  ^H}
  996.   {SETG 120,WFC}
  997.   {GETS ch,1,SP0}
  998.   {COMP ch,n}  {IFCO SP0}
  999.   {COMP ch,y}  {IFCO ,SP11}
  1000.   {DISP 16,15,0C,Ok...}  {PAUS 1}
  1001.   {MACL MACROCFG.MAC,start}
  1002.  
  1003. {:SP13} {STAT y}  {SETV mcount,1}
  1004. {:SP21} {CALL CLS}  {SETV count,0}
  1005.   {SEND ^J^M%an1          #  Handle^J^M^J}
  1006. {:SP15} {IFEX %userdir%%mcount.MHS,,SP18}
  1007.   {ROPE %userdir%%mcount.MHS,SP18}  {READ dline}  {RCLO}
  1008.   {SEND %an7          %mcount. %an3%%dline^J^M}
  1009.   {INCR count}
  1010. {:SP18} {INCR mcount}  {COMP mcount,%uhigh}  {IFCO-G SP16}
  1011.   {COMP count,18}  {IFCO ,SP15}
  1012.   {CALL screen_full}
  1013.   {COMP ch,y}  {IFCO SP21}
  1014. {:SP16} {CALL press_any_key}
  1015.   {COMP on,}  {IFCO SP0}
  1016.   {RETURN}
  1017.  
  1018. {:SP2}  {SETV userno,1}
  1019. {:SP6}  {IFEX %msgsdir%E%userno-1.PVT,,SP0}
  1020.   {SETV mcount,0}
  1021.   {STAT y}   {CALL BB36}
  1022.   {GOTO SP0}
  1023.  
  1024. {:SP3}  {DISP 13,15,07,Read whose mail?}
  1025.   {CALL SP10}
  1026.   {GOTO SP6}
  1027.  
  1028. {:SP7}  {SETV userno,1}
  1029.   {CALL send_email}
  1030.   {GOTO SP0}
  1031.  
  1032. {:SP8}  {DISP 13,15,07,Count whose mail?}
  1033.   {CALL SP10}
  1034.   {CALL mail_count}
  1035.   {DISP 16,15,,%an7%%to %an3%has %an7%%ch %an3%letter(s) waiting.}
  1036.   {CALL press_any_key}
  1037.   {GOTO SP0}
  1038.  
  1039. {:SP9}  {DISP 13,15,07,Edit whose letter?}
  1040.   {CALL SP10}
  1041.   {CALL mail_count}
  1042. {:SP12} {DISP 16,15,09,Which?%an0 (1 - %ch) :   ^H^H}
  1043.   {SETG 120,WFC}
  1044.   {GETS to,2,SP0}
  1045.   {COMP to,%ch}  {IFCO-G SP12}
  1046.   {IFEX %msgsdir%E%userno-%to.PVT,,SP12}
  1047.   {EDIT %msgsdir%E%userno-%to.PVT}
  1048.   {GOTO SP0}
  1049.  
  1050. {:SP14} {DISP 14,15,09,View which? %an0(1-7) :   ^H^H}
  1051.   {SETG 120,WFC}
  1052.   {GETS-H ch,1,SP0}
  1053.   {COMP ch,1}  {IFCO-L SP14}
  1054.   {COMP ch,7}  {IFCO-G SP14}
  1055.   {IFEX %datadir%LOG-%ch.LOG,,SP14}
  1056.   {SETV dump_file,%datadir%LOG-%ch.LOG}
  1057.   {CLEA}  {STAT y}
  1058.   {CALL dsp_file}
  1059.   {CALL press_any_key}
  1060.   {GOTO SP0}
  1061.  
  1062. {:SP10}  {DISP 14,15,09,Enter a handle or ID#:                               }
  1063.   {DISP 14,15,09,Enter a handle or ID#: }  {SEND %an0}
  1064.   {SETG 120,WFC}
  1065. {:SP4}  {GETS to,30,SP19}
  1066.   {DISP 15,15,,}
  1067.   {CALL match_name_userno}
  1068.   {COMP t,1}  {IFCO ,SP10}  {SETV t}
  1069.  
  1070.   {SETV userno,%tono}
  1071.   {RETURN}
  1072. {:SP19}  {POPS}
  1073.   {GOTO SP0}
  1074.  
  1075. {:wait_for_call}
  1076.   {PUSH}
  1077.   {SETE cancel}
  1078. {:WFC}  {SETV s}  {SETV count,0}
  1079. {:WF7}  {SETV userno,1}  {CALL mail_count}
  1080.   {CALL read_data}  {SETV login_name,%l_caller}  {SETV userno,%luserno}
  1081.   {COMP ldate,%_dat}  {IFCO ,midnight}
  1082.  
  1083.   {STAT n}  {CLEA}
  1084. {:WF8}  {DISP 1,2,0C,%bbs}
  1085.   {DISP 25, 4,02,System Time: }
  1086.   {DISP 25,57,02,Date: }
  1087.   {CALL WF6}
  1088.   {CALL WF5}
  1089.   {DISP 2 ,36,0C,╔%an3 ▄   ▄ ▄▄▄ ▄▄▄ ▄▄▄  ▄▄▄▄%an0 (tm) %an1═══════════╗}
  1090.   {DISP 3 ,36,0C,║%an3 ██▄██ █▄█ █   █▄█▄ █  █%an7 Version 1.2d   %an1 ║}
  1091.   {DISP 4 ,36,0C,║%an3 █ ▀ █ █ █ █▄▄ █  █ █▄▄█%an0 by Jeff Oberlee%an1 ║}
  1092.   {DISP 5 ,36,0C,╚═════════%an7 B B S%an1 ═════════════════════════╝}
  1093.   {DISP 18, 4,0C,Last Caller: %an0%%l_caller #%luserno}
  1094.   {DISP 19, 4,0C,Last Date  : %an0%%ldate}
  1095.   {DISP 20, 4,0C,Logon Time : %an0%%stime}
  1096.   {DISP 21, 4,0C,Logoff Time: %an0%%ftime}
  1097.   {DISP 22, 4,0C,Calls Today: %an0%%tdcalls}
  1098.   {DISP 23, 4,0C,Mins Active: %an0%%ttu}
  1099.   {DISP 19,37,07,   ____    }
  1100.   {DISP 20,37,07,^|\/ o  \   }
  1101.   {DISP 21,37,07,^|    ,__^|  }
  1102.   {DISP 22,37,07,^|/\____/  }
  1103.   {DISP 19,60,09,Pub Posted : %an0%%pub}
  1104.   {DISP 20,60,09,Pvt Mailed : %an0%%pvt}
  1105.   {DISP 18,60,09,Sysop Mail : %an0%%ch}
  1106.   {DISP 22,60,09,Total Calls: %an0%%callno}
  1107. {:WF0}
  1108.   {SETE-P0 m_init}
  1109.   {DISP 25,32,87,Waiting for a Call}
  1110.   {DISP 25,17,07,%_tim}  {DISP 25,63,07,%_dat (%_dwt)}
  1111.   {DISP 15,3,02, Command:                     }  {DISP 15,3,02, Command%an0: }
  1112.   {SPOC y}  {LOCA y}  {CURS y}
  1113.   {SETG 30,blink,l}
  1114. {:WF1}  {GETS-L ch,10,WF1}
  1115.   {COMP ch,%ring}  {IFCO WF9}
  1116.   {COMP ch,i}  {IFCO m_init_w}
  1117.   {SPOC n}
  1118.   {SETE cancel}
  1119.   {COMP ch,1}  {IFCO WF2}
  1120.   {COMP ch,c}  {IFCO call_log}
  1121.   {COMP ch,u}  {IFCO use_log}
  1122.   {COMP ch,s}  {IFCO special}
  1123.   {COMP ch,2}  {IFCO view_scroll}
  1124.   {COMP ch,3}  {IFCO ed_opts}
  1125.   {COMP ch,4}  {IFCO edit_fareas}
  1126.   {COMP ch,5}  {IFCO edit_msgbs}
  1127.   {COMP ch,6}  {IFCO edit_caller}
  1128.   {COMP ch,d}  {IFCO dos_shell}
  1129.   {COMP ch,q}  {IFCO WF3,WF0}
  1130.  
  1131. {:WF9}
  1132.   {DISP 15,3,,                              }  {DISP 15,4,,}
  1133.   {SETG 1,RNG2}
  1134. {:RNG1}  {GETS ch,20,RNG1}
  1135.   {GOTO RNG1}
  1136. {:RNG2}  {DISP 25,32,8E,Waiting to CONNECT}  {DISP 15,4,,}
  1137.   {SEND ATA^J^M}
  1138.   {DISP 15,4,0F,ATA%an9:                        }  {DISP 15,9,,}
  1139.   {SETL 45,m_init}
  1140.   {GOLO 300,%connect^M}
  1141.   {GOLO 1200,%connect 1200}
  1142.   {GOLO 2400,%connect 2400}
  1143.   {GOLO 4800,%connect 4800}
  1144.   {GOLO 7200,%connect 7200}
  1145.   {GOLO 9600,%connect 9600}
  1146.   {GOLO 12000,%connect 12000}
  1147.   {GOLO 14400,%connect 14400}
  1148.   {GOLO 19200,%connect 19200}
  1149.   {GOLO m_init_w,%ring}
  1150.   {GOLO m_init,NO CARRIER}
  1151.   {LOOK %connect 38400}
  1152.   {SETV mspeed,38400}
  1153.   {GOTO WF10}
  1154. {:300}  {SETV mspeed,300}  {GOTO WF10}
  1155. {:1200} {SETV mspeed,1200} {GOTO WF10}
  1156. {:2400} {SETV mspeed,2400} {GOTO WF10}
  1157. {:4800} {SETV mspeed,4800} {GOTO WF10}
  1158. {:7200} {SETV mspeed,7200} {GOTO WF10}
  1159. {:9600} {SETV mspeed,9600} {GOTO WF10}
  1160. {:12000} {SETV mspeed,12000} {GOTO WF10}
  1161. {:14400} {SETV mspeed,14400} {GOTO WF10}
  1162. {:19200} {SETV mspeed,19200}
  1163.  
  1164. {:WF10}  {COMP lock,y}  {IFCO WF11}
  1165.   {PARM %mspeed}
  1166. {:WF11}  {SETV on,1}
  1167.   {POPS-C}
  1168.   {GOTO BBS1}
  1169.  
  1170. {:blank_wait}
  1171.   {SETE-P0 m_init}
  1172.   {CLEA}
  1173.   {SETG 60,BW2}
  1174. {:BW1}  {GETS-H ch,1}
  1175.   {GOTO WFC}
  1176. {:BW2}  {COMP %_dat,%ldate}  {IFCO ,midnight}
  1177.   {GOTO BW1}
  1178.  
  1179. {:WF5}
  1180.   {DISP 6 ,36,17,╔═════════════════════════════════════════╗
  1181.   {DISP 7 ,36,17,║    Embryo     ____    by Shad Muegge    ║}
  1182.   {DISP 8 ,36,17,║   ---------^|\/ o  \------------------   ║}
  1183.   {DISP 9 ,36,17,║        ____^|    ,__^| Association of     ║}
  1184.   {DISP 10,36,17,║       /  o \/^|____/  Babble Fish        ║}
  1185.   {DISP 11,36,17,║      ^|__,    ^|____   Programmers        ║}
  1186.   {DISP 12,36,17,║       \____^|\/ o  \                     ║}
  1187.   {DISP 13,36,17,║            ^|    ,__^| MEMBER             ║}
  1188.   {DISP 14,36,17,║   ---------^|/\____/------------------   ║}
  1189.   {DISP 15,36,17,║                                         ║}
  1190.   {DISP 16,36,17,╚═════════════════════════════════════════╝}
  1191.   {RETURN}
  1192.  
  1193. {:WF6}
  1194.   {DISP  2,2,47,╔════════════════════════════════╗}
  1195.   {DISP  3,2,47,║%an3%%an13 MacroBBS:%an0%%an13  OFF-LINE            ║}
  1196.   {DISP  4,2,47,╠════════════════════════════════╣}
  1197.   {DISP  5,2,47,║%an7%%an13 OPTIONS              LOGS%an0%%an13      ║}
  1198.   {DISP  6,2,47,║ 1. Log-on (local)   C - Calls  ║}
  1199.   {DISP  7,2,47,║ 2. See Scrollback   U - Usage  ║}
  1200.   {DISP  8,2,47,║ 3. Text Edit Menu   %an7%%an13 MISC%an0%%an13      ║}
  1201.   {DISP  9,2,47,║ 4. FileXfer Areas   D - DOS    ║}
  1202.   {DISP 10,2,47,║ 5. Message  Areas   I - Init   ║}
  1203.   {DISP 11,2,47,║ 6. Caller Records   S - Sysop  ║}
  1204.   {DISP 12,2,47,║                     Q - Quit   ║}
  1205.   {DISP 13,2,47,╚════════════════════════════════╝}
  1206. {:EO2}
  1207.   {DISP 14,1,07, ╔════════════════════════════════╗}
  1208.   {DISP 15,1,07, ║                                ║}
  1209.   {DISP 16,1,07, ╚════════════════════════════════╝}
  1210.   {DISP 17,1,,            }
  1211.   {RETURN}
  1212.  
  1213. {:WF2}
  1214.   {SETV mspeed,LOCAL}
  1215.   {SETV on,2}
  1216.   {SPOC n}
  1217.   {POPS-C}
  1218.   {GOTO BBS1}
  1219.  
  1220. {:cancel}
  1221.    {COMP open,y}  {IFCO ,XX}  {RCLO}
  1222. {:XX}  {GOTO BBS}
  1223.  
  1224. {:WF3}  {CLEA}
  1225.   {SPOC y}  {LOCA n}
  1226.   {SETV a} {SETV e} {SETV f} {SETV n} {SETV r} {SETV t} {SETV ta} {SETV em}
  1227.   {SETV aa} {SETV ch} {SETV temp} {SETV cf} {SETV na} {SETV mx} {SETV mic}
  1228.   {SETV new} {SETV df} {SETV em} {SETV tl} {SETV ta} {SETV on} {SETV fa}
  1229.  
  1230.   {SETV al}
  1231.   {SETV bal}
  1232.   {SETV bname}
  1233.   {SETV ccount}
  1234.   {SETV chat}
  1235.   {SETV cline}
  1236.   {SETV co1}
  1237.   {SETV co2}
  1238.   {SETV count}
  1239.   {SETV dfiles}
  1240.   {SETV dline}
  1241.   {SETV dump_file}
  1242.   {SETV ecount}
  1243.   {SETV expert}
  1244.   {SETV files}
  1245.   {SETV fline}
  1246.   {SETV high}
  1247.   {SETV himsgno}
  1248.   {SETV lineno}
  1249.   {SETV lname}
  1250.   {SETV login_name}
  1251.   {SETV lomsgno}
  1252.   {SETV maxmsg}
  1253.   {SETV mcount}
  1254.   {SETV password}
  1255.   {SETV proto}
  1256.   {SETV protocol}
  1257.   {SETV quotemsg}
  1258.   {SETV reads}
  1259.   {SETV subj}
  1260.   {SETV to}
  1261.   {SETV tono}
  1262.   {SETV total}
  1263.   {SETV trace}
  1264.   {SETV userno}
  1265.  
  1266.   {COMP s,5}  {IFCO ,CU}   {RETURN}
  1267.  
  1268. {:CU}  {STAT y}
  1269.   {CALL ascii}
  1270.   {SETV mnu} {SETV s}
  1271.  {SETV datadir} {SETV dszdir} {SETV filedir} {SETV msgsdir} {SETV userdir}
  1272.  {SETV cb} {SETV asan} {SETV bw} {SETV lock}
  1273.  {SETV bbs} {SETV sysop} {SETV syspass} {SETV initstr} {SETV dal} {SETV sal}
  1274.  {SETV connect} {SETV ring} {SETV tlc} {SETV max} {SETV mspeed}
  1275.   {SETV callno} {SETV uhigh} {SETV mhigh} {SETV fhigh}
  1276.   {SETV ttu} {SETV pub} {SETV pvt} {SETV tf} {SETV l_caller} {SETV luserno}
  1277.   {SETV stime} {SETV ftime} {SETV ldate} {SETV tdcalls}
  1278.  
  1279.   {DISP 2,1,0E,Exiting to COMMO ...^J^M}
  1280.   {LIGH n}
  1281.   {INIT}
  1282.   {MACL COMMO.MAC}
  1283.  
  1284. {:ed_opts}
  1285.   {CALL get_syspass}
  1286.   {CALL EO2}
  1287. {:EO}
  1288.   {DISP  4,2,47,╚════════════════════════════════╝}
  1289.   {DISP  5,2,07,╔═%an7 OPTIONS%an0 ══════════════════════╗}
  1290.   {DISP  6,2,07,║                                ║}
  1291.   {DISP  7,2,07,║%an7 1.%an0 Edit log-on NOTICES         ║}
  1292.   {DISP  8,2,07,║%an7 2.%an0 Edit a file list            ║}
  1293.   {DISP  9,2,07,║%an7 3.%an0 Edit any ASCII file         ║}
  1294.   {DISP 10,2,07,║                                ║}
  1295.   {DISP 11,2,07,║                                ║}
  1296.   {DISP 12,2,07,║                                ║}
  1297.   {DISP 13,2,07,╚════════════════════════════════╝}
  1298. {:EO1}  {DISP 11,4,0F,Which? %an0[ENTER = quit] :%an7   ^H^H}
  1299.   {SETG 120,time_out}
  1300.   {GETS-H ch,1,EO3}
  1301.   {COMP ch,1}  {IFCO note_ed}
  1302.   {COMP ch,2}  {IFCO list_edit}
  1303.   {COMP ch,3}  {IFCO edit_a_file}
  1304.   {GOTO EO1}
  1305. {:EO3}  {CALL WF6}
  1306.   {GOTO m_init_w}
  1307.  
  1308. {:note_ed}
  1309.   {EDIT %datadir%NOTICES.DAT}
  1310.   {GOTO EO}
  1311.  
  1312. {:edit_a_file}
  1313.   {SETV ch,%_home}
  1314.   {DISP 13,36,17,╚═════════════════════════════════════════╝}
  1315.   {DISP 14, 2,0F,╔════════════%an3 Type full path of file to edit, then press ENTER%an7 ═════════════╗}
  1316.   {DISP 15, 2,0F,║                                                                           ║}
  1317.   {DISP 16, 2,0F,╚═══════════════════════════════════════════════════════════════════════════╝}
  1318. {:EAF2} {DISP 15,4,09,Path:                                                                  }
  1319.   {DISP 15, 4,0E,Path: %an0%%ch}
  1320.   {SETG 120,WFC}
  1321.   {GETS-A ch,67,EAF1}
  1322.   {EDIT %ch}
  1323.   {SETV ch,%_hom}
  1324.   {GOTO EAF2}
  1325. {:EAF1}
  1326.   {CALL WF5}
  1327.   {CALL EO2}
  1328.   {GOTO EO}
  1329.  
  1330. {:list_edit}
  1331.   {DISP 15,3,0E, Which? %an0(1 - %fhigh) :    ^H^H^H}
  1332.   {SETG 60,WFC}
  1333.   {GETS ch,3,LE}
  1334.   {COMP ch,1}  {IFCO-L list_edit}
  1335.   {COMP ch,%fhigh}  {IFCO-G list_edit}
  1336.   {EDIT %filedir%F%ch.LST}
  1337. {:LE}  {CALL EO2}
  1338.   {GOTO EO}
  1339.  
  1340. {:blink}
  1341.   {INCR count}
  1342.   {COMP %_dat,%ldate}  {IFCO ,midnight}
  1343.   {CURS n}
  1344.   {DISP 20,37,07,\}
  1345.   {DISP 21,37,07,\}
  1346.   {DISP 22,37,07,\}
  1347.   {PAUS 1}
  1348.   {DISP 20,37,07,^|}
  1349.   {DISP 21,37,07,^|}
  1350.   {DISP 22,37,07,^|}
  1351.   {DISP 15,13,07,}
  1352.   {COMP bw,y}  {IFCO blank_wait}
  1353.   {CURS y}
  1354.   {COMP count,15}  {IFCO-GE m_init_w,WF0}
  1355.  
  1356. {:midnight}
  1357.   {CLEA}  {SEND ATM0H1^J^M}
  1358.   {MACL MACRONYT.MAC,start}
  1359.  
  1360. {:mail_count}
  1361.   {SETV ch,0}
  1362. {:MC1}  {INCR ch}
  1363.   {IFEX %msgsdir%E%userno-%ch.PVT,MC1}
  1364.   {DECR ch}
  1365.   {RETURN}
  1366.  
  1367. {:send_email}
  1368.   {CALL cls}
  1369.   {SETV f,1}
  1370.   {SEND ^J^M%an0%     (Enter a Handle or ID#)^J^M}
  1371.   {SEND %an7%To:  %an7%%an12                              ^M}
  1372.   {SEND %an7%To:  %an7%%an12}
  1373.   {SETG 120,time_out}
  1374.   {GETS to,30,BB16}
  1375.   {SEND ^J^M}
  1376.   {CALL match_name_userno}
  1377.   {COMP t,1}  {IFCO ,send_email}  {SETV t}
  1378.   {SEND %an3%Send email to %an7%%to (#%tono)%an3?  %an0(%an7%Y%an0,n) : %an7}
  1379. {:SE1}  {GETS-H ch,1,SE4}
  1380.   {COMP ch,y}   {IFCO SE4}
  1381.   {COMP ch,n}   {IFCO send_email}
  1382.   {SEND ^H}  {GOTO SE1}
  1383.  
  1384. {:match_name_userno}
  1385.   {IFEX %datadir%CALLERS.LST,,MNU2}
  1386.   {ROPE %datadir%CALLERS.LST,MNU2}
  1387. {:MNU1} {READ ch}  {READ lname}  {READ dline}
  1388.   {COMP to,%ch}  {IFCO MNU5}
  1389.   {COMP to,%lname}  {IFCO ,MNU1}
  1390. {:MNU5} {SETV to,%lname}
  1391.   {SETV tono,%ch}
  1392.   {RCLO}
  1393.   {SETV t,1}
  1394.   {GOTO MNU4}
  1395. {:MNU2} {SEND %an1%ID not found.}  {PAUS 1}
  1396. {:MNU4} {RETURN}
  1397.  
  1398. {:BBS}
  1399.   {CLEA}
  1400.   {POPS-C}
  1401.   {SETV on}  {SETV open}  {SETV s,5}
  1402.   {CALL WF3}
  1403.   {CALL setup}
  1404.   {COMP asan,y}  {IFCO asn1}
  1405.   {CALL ascii}
  1406.   {GOTO asn2}
  1407. {:asn1}  {CALL ansi}
  1408. {:asn2}  {LENG %bbs}  {SETV ch,69}  {DECR ch,%_len}
  1409.   {SUBS dline,1,%ch,░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  1410.   {SETV bbs,%an3░░░░░░%an0 %bbs%%an3 %dline}  {SETV dline}
  1411.   {GOTO wait_for_call}
  1412.  
  1413. {:BBS1}
  1414.   {SETV login_name}  {SETV userno}
  1415.   {SETV expert,OFF}  {SETV a,1}  {SETV fa,1}
  1416.   {SETV ring}  {SETV connect}  {SETV initstr}  {SETV bw}  {SETV asan}
  1417.   {CLEA}  {STAT y}  {ELAP}
  1418.   {SETE-P0 esc_menu}
  1419.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT █████  Connect: %mspeed on %_dat %_tim  █████}  {WRIT }  {WCLO}
  1420.   {DISP 1,1,0F,Connection speed: %an3%%mspeed}
  1421.   {SEND ^J^M^J}
  1422.   {ROPE %_hom%MACROBBS.CFG,}  {READ bbs}  {RCLO}
  1423.   {SEND MacroBBS (tm) v1.2d - (C)opyright 1992 by Jeff Oberlee - All Rights Reserved^J^M^J}
  1424.   {SEND ----------------------------------------------------------------------------^J^M^J}
  1425.   {SEND  Welcome to %bbs^J^M^J}  {SETV bbs}
  1426.   {PUSH}
  1427.   {SEND Does your computer do ANSI color?^J^M}
  1428.   {SEND   If you see a line of O's next to the arrow, press Y for YES.^J^M}
  1429.   {SEND   But if you see a lot of other junk, press N for NO.^J^M^J}
  1430.   {SEND   --> ^[[0;1;31mOOOO^[[0;1;33mOOOO^[[0;1;37mOOOO^[[0;2;32mOOOO^[[0;1;34mOOOO^[[0m^J^M^J}
  1431.   {SETG 90,gbye}
  1432. {:BB22}  {SEND ^MDoes your computer do ANSI color? (y,n) : }
  1433.   {CALL cd}
  1434.   {GETS-H ch,1,BB22}
  1435.   {COMP ch,y}  {IFCO BB23}
  1436.   {COMP ch,n}  {IFCO BB24}
  1437.   {SEND ^H}   {GOTO BB22}
  1438. {:BB23}  {SEND ^[[2J}
  1439.   {CALL ansi}
  1440.   {GOTO BB25}
  1441. {:BB24} {SEND ^L}
  1442.   {CALL ascii}
  1443. {:BB25}  {POPS}
  1444.   {SETV dump_file,%datadir%LOGON%mnu.mnu}
  1445.   {IFEX %dump_file,,BB34}
  1446.   {CALL ascii_ul}
  1447. {:BB34}  {CALL read_data}
  1448.   {ELAP}
  1449.   {GOTO login_user}
  1450. {:BB}  {SETV new}  {SETV lock}
  1451.   {COMP success,TRUE}  {SETV success}  {IFCO ,gbye}
  1452. {:BB1}  {SETV stime,%_tim}  {SETV reads,0}  {SETV ftime,%_tim}
  1453.   {COMP on,2}  {IFCO BB15}
  1454.   {INCR callno}  {INCR tdcalls}
  1455.   {CALL write_data}
  1456. {:BB15}  {PUSH}
  1457.   {CALL cls}
  1458.   {SEND ^J^M^J%an3  Greetings %an7%%login_name%%an3%!  Glad you could drop by!^J^M}
  1459.   {SEND ^J^M%an1  You are caller #%an0%%callno^J^M}
  1460.   {SEND ^J^M%an5  The last person online was none other than %an7%%l_caller %an0%#%luserno^J^M}
  1461.   {SETV ch,%tlc}  {DECR ch,%_ela}
  1462.   {SEND ^J^M%an7  Allotted time for this call:  %an4%%ch%%an7 minute(s)^J^M^J}
  1463.   {IFEX %datadir%INTROMSG.MSG,,BB2}
  1464.   {SETV open,y}
  1465.   {ROPE %datadir%INTROMSG.MSG,BB2}  {READ ch}
  1466.   {SEND ^J^M%an1  INTROMSG   %an0%by %an7%%ch^J^M^J}
  1467. {:BB26} {READ dline}  {SEND %dline^J^M}  {GOTO BB26}
  1468. {:BB2}  {POPS}
  1469.   {SETV dline}  {SETV open}
  1470.   {CALL press_any_key}
  1471. {:BB17}
  1472.   {IFEX %datadir%PERSONAL.DAT,,BB21}
  1473.   {IFEX %userdir%%userno.DAT,BB21}
  1474.   {MACL MACRODAT.MAC,start}
  1475. {:BB21}  {SETV dump_file,%datadir%NOTICES.DAT}
  1476.   {IFEX %dump_file,,BB35}
  1477.   {CALL cls}  {SEND ^J^M%an7                                    NOTICES^J^M%an5}
  1478.   {CALL dsp_file}
  1479.   {CALL press_any_key}
  1480. {:BB35} {CALL cls}
  1481.   {IFEX %_hom%QUOTED.EXE,,BB10}
  1482.   {SETV dump_file,%datadir%TEMP.000}
  1483.   {SEND ^J^M%an7...and I quote:^J^M^J%an3}
  1484.   {EXEC-N %_hom%QUOTED.EXE > %dump_file}
  1485.   {CALL dsp_file}
  1486.   {SEND ^J^M%an1────────────────────────────────────-}
  1487. {:BB10}  {IFEX %msgsdir%E%userno-1.PVT,,BB18}
  1488.   {SETV mcount,0}
  1489.   {SEND ^J^M^J%an7  Read your private mail? %an0(%an7%Y%an0,n) : %an3}
  1490.   {SETG 120,time_out}
  1491. {:BB33}  {GETS-H ch,1,BB36}
  1492.   {COMP ch,n}  {IFCO BB3}
  1493.   {COMP ch,y}  {IFCO BB36}
  1494.   {SEND ^H}  {GOTO BB33}
  1495. {:BB36}
  1496.   {CALL cls}
  1497.   {CALL mail_count}
  1498.   {SETV total,%ch}
  1499. {:BB4}  {INCR mcount}
  1500. {:BB14}  {SETV dump_file,%msgsdir%E%userno-%mcount.PVT}
  1501.   {IFEX %dump_file,,BB5}
  1502.   {CALL cls}
  1503.   {SEND %an7%Letter #%mcount of %total^J^M^J}
  1504.   {SETV e,1}  {CALL dsp_file}  {SETV e}
  1505.   {SETE time_out}
  1506.  
  1507. {:BB6}  {SEND ^J^M%an5%E-mail Menu%an0%:  %an7%R%an0%eply, %an7%P%an0%rev, %an7%A%an0%gain, %an7%N%an0%ext or %an7%Q%an0%uit? }
  1508.   {SETG 300,time_out}
  1509. {:BB8}  {GETS-H ch,1,BB4}
  1510.   {COMP ch,a}  {IFCO BB14}
  1511.   {COMP ch,n}  {IFCO BB4}
  1512.   {COMP ch,q}  {IFCO BB5}
  1513.   {COMP ch,r}  {IFCO BB7}
  1514.   {COMP ch,p}  {IFCO FW1}
  1515.   {SEND ^H}  {GOTO BB8}
  1516. {:FW1}  {COMP mcount,1}  {IFCO ,FW2}
  1517.   {SEND ^J^M^J%an7<Beginning of %an5%E-mail%an7>^J^M}  {GOTO BB6}
  1518. {:FW2}  {DECR mcount,2}
  1519.   {GOTO BB4}
  1520. {:BB7}  {SETV r,1}
  1521.   {SETV quotemsg,%msgsdir%E%userno-%mcount.PVT}
  1522.   {ROPE %quotemsg,BB6}  {READ tono}  {READ to}  {READ to}  {RCLO}
  1523.   {CALL cls}
  1524. {:SE4}  {SETV ecount,0}
  1525. {:BB9}  {INCR ecount}
  1526.   {IFEX %msgsdir%E%tono-%ecount.PVT,BB9}
  1527.   {SETV dump_file,%msgsdir%E%tono-%ecount.PVT}
  1528.   {SETE time_out}
  1529.   {WOPE-A %dump_file}
  1530.   {SETV open,yy}
  1531.    {WRIT %userno}
  1532.    {WRIT %to}
  1533.    {WRIT %login_name}
  1534.    {WRIT STUFF}
  1535.    {WRIT %_dat %_tim}
  1536.    {WRIT  }
  1537.   {SETV lineno,0}
  1538.   {SEND ^J^M^J%an7%Maximum of %max lines.^J^M}
  1539.   {SEND %an4-------------%an0 /s - save %an4-------%an0 /e - editor %an4-------%an0 /abt - abort %an4--------------^J^M}
  1540.   {COMP r,1}  {IFCO ,BB27}
  1541.   {SEND %an4-------------------------------%an0 /q - quoter %an4-----------------------------------^J^M}
  1542. {:BB27} {SETV dline}
  1543. {:BB28} {SEND ^J^M%an3%%dline}
  1544.   {SETG 240,BB13}
  1545.   {GETS-AH dline,78,BB12}
  1546.   {COMP dline,/e}    {IFCO edit_system}
  1547.   {COMP dline,/q}    {IFCO quote}
  1548.   {COMP dline,/s}    {IFCO BB11}
  1549.   {COMP dline,/abt}  {IFCO BB13}
  1550.   {SETV dline, %dline}
  1551.   {LENG %dline}  {COMP %_len,78}  {IFCO-LE BB31}
  1552.   {SETV ccount,80}   {SETV temp,0}
  1553. {:BB29}  {DECR ccount}  {INCR temp}
  1554.   {COMP ccount,60}  {IFCO-LE BB31}
  1555.   {SUBS ch,%ccount,1,%dline}
  1556.   {COMP ch, }  {IFCO ,BB29}
  1557.   {COMP ccount,79}  {IFCO BB31}
  1558.   {SETV ch,0}
  1559. {:BB30}  {INCR ch}  {SEND ^H}
  1560.   {COMP ch,%temp}  {IFCO ,BB30}
  1561.   {SETV ch,78}  {DECR ch,%temp}
  1562.   {SUBS cline,2,%ch,%dline}
  1563.   {WRIT %cline}   {SETV cline}
  1564.   {INCR ccount}
  1565.   {SUBS dline,%ccount,%temp,%dline}
  1566.   {INCR lineno}  {COMP lineno,%max}  {IFCO-LE BB28,BB32}
  1567. {:BB31}  {SUBS dline,2,100,%dline}
  1568. {:BB12}  {WRIT %dline}
  1569.   {INCR lineno}  {COMP lineno,%max}  {IFCO-LE BB27}
  1570. {:BB32}  {SEND ^J^M%an7%You have reached the line limit.^J^M}  {GOTO edit_system}
  1571. {:BB11}  {WCLO}
  1572.   {SEND ^J^M%an3%Your letter has been mailed.}
  1573.   {COMP on,}  {IFCO BB16}
  1574.   {CALL read_data}
  1575.   {INCR pvt}
  1576.   {CALL write_data}
  1577.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT %_tim : Sent private email to %to #%tono}  {WCLO}
  1578.   {GOTO BB16}
  1579. {:BB13} {WCLO}
  1580.   {EXEC-N DEL %dump_file}
  1581.   {SEND ^J^M%an1%Message aborted and deleted.^J^M}  {PAUS 1}
  1582.  
  1583. {:BB16}  {SETV r}  {SETV open}  {COMP f,1}  {IFCO ,BB6}
  1584.   {SETV f}  {SEND %an0}
  1585. {:BB19}  {SETV mcount}  {SETV ecount}
  1586.   {RETURN}
  1587.  
  1588. {:BB5}  {COMP on,}  {IFCO BB19}
  1589.   {CALL cls}
  1590.   {SEND ^J^M^J%an7  That's all for now...}
  1591.   {SETV lineno}   {SETV lname}  {SETV dline}
  1592.   {GOTO BB20}
  1593.  
  1594. {:BB18}  {SEND ^J^M^J%an0  Sorry.  Your E-mailbox is empty.^J^M^J}
  1595. {:BB20}  {CALL press_any_key}
  1596.   {COMP on,}  {IFCO BB19}
  1597. {:BB3}  {SETV mcount}  {SETV ecount}
  1598.   {GOTO main_menu}
  1599.  
  1600. {:ansi}
  1601.   {SETV mnu,n}
  1602.   {SETV an0,^[[0;2;37m}
  1603.   {SETV an1,^[[0;1;31m}
  1604.   {SETV an2,^[[0;2;32m}
  1605.   {SETV an3,^[[0;1;33m}
  1606.   {SETV an4,^[[0;1;34m}
  1607.   {SETV an5,^[[0;1;35m}
  1608.   {SETV an6,^[[0;1;36m}
  1609.   {SETV an7,^[[0;1;37m}
  1610.  
  1611.   {SETV an9,^[[5m}  {SETV an12,^[[44m}  {SETV an13,^[[41m}
  1612.   {RETURN}
  1613.  
  1614. {:ascii}
  1615.   {SETV mnu,A}
  1616.   {SETV an0} {SETV an1} {SETV an2} {SETV an3} {SETV an4} {SETV an5}
  1617.   {SETV an6} {SETV an7} {SETV an9} {SETV an12} {SETV an13}
  1618.   {RETURN}
  1619.  
  1620. {:gby2}
  1621.   {SEND ^J^M^J%an1%%an9%Your time on-line for this call has expired.}  {PAUS 4}
  1622.   {IFCA ,GB2}
  1623.  
  1624. {:gby}
  1625.   {SEND ^J^M^J}
  1626.   {SETV dump_file,%datadir%LOGOFF%mnu.mnu}
  1627.   {IFEX %dump_file,,GB2}
  1628.   {CALL ascii_ul}
  1629. {:GB2}  {SETV ftime,%_tim}
  1630.   {INCR ttu,%_ela}
  1631.   {HANG y}
  1632.   {IFEX %msgsdir%E%userno-*.PVT,,GB1}
  1633.   {COMP mspeed,local}  {IFCO ,GB3}
  1634. {:GB4}  {SEND ^M%an3%Delete your e-mail? %an0(y,%an7%N%an0) :  ^H}
  1635.   {SETG 60,GB1}
  1636.   {GETS-H ch,1,GB1}
  1637.   {COMP ch,n}  {IFCO GB1}
  1638.   {COMP ch,y}  {IFCO ,GB4}
  1639. {:GB3}  {SEND ^J^M%an0%Deleting e-mail...}
  1640.   {EXEC-N DEL %msgsdir%E%userno-*.PVT}
  1641. {:GB1}  {SEND ^J^M%an1%Saving...}
  1642.   {CALL write_user}
  1643.   {CALL write_data}
  1644.   {WOPE-A %datadir%LOG-1.LOG}  {WRIT Read: %reads}
  1645.   {WRIT ░░░░░  Logoff: %_dat %_tim  ░░░░░}  {WRIT  }  {WCLO}
  1646.   {COMP on,2}  {IFCO hng}
  1647.   {SEND ^J^M%an3%Updating Caller log...}
  1648.   {WOPE-A %datadir%CALLERS.TDY}
  1649.   {WRIT %_dat   %stime TO %ftime    %login_name  #%userno}  {WCLO}
  1650. {:hng}  {GOTO bbs}
  1651.  
  1652. {:gbye} {HANG y}
  1653.   {WOPE-A %datadir%LOG-1.LOG}
  1654.   {WRIT ▒░▒░▒  DISCONNECTED: %_dat %_tim ▒░▒░▒}  {WRIT }  {WCLO}
  1655.   {GOTO bbs}
  1656.